package com.platform.server.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.platform.server.entity.EnterpriseInfo;
import com.platform.server.entity.Identity;
import com.platform.server.entity.User;
import com.platform.server.entity.Withdraw;
import com.platform.server.response.pojo.ReturnData;

public interface UserDao {

    /**
     * 人脸识别是否通过
     */
    int updateFaceStatu(String statu, String id);

    //人脸识别通过则身份认证通过，否则身份认证不通过
    int updateIdentityStatu(@Param("statu") String statu, @Param("id") String id);

    /**
     * 微信登录
     */
    User selectWxnum(String openid);

    /**
     * 填写推荐人手机
     */
    int insertRecommendMobile(String userid, String mobile);

    /**
     * 查看推荐人手机号
     */
    String selectRecommendMobile(String userid);

    /**
     * 根据手机号查询用户id
     */
    String selectUserInfoId(String userid);


    /**
     * 查看个人照片
     */
    String selectUserPhoto(String userid);

    /**
     * 用户之间是否公司的关联关系
     */
    int selectUserRelation(Integer userid, Integer detailsUserid);

    /**
     * 注册获取验证码
     */
    //查看用户是否已经注册成功
    Map<String, Object> selectUserIsRegister(String mobile);

    //用户存在就修改验证码
    int updateRegisterCode(String mobile, String code);

    //用户不存在就增加记录
    int insertRegisterCode(String mobile, String code);

    /**
     * 注册成功后设置密码
     */
    int insertPassword(String id, String password);

    /**
     * 用户注册
     */
    int updateUserStatu(String mobile, String username);

    //注册成功后添加钱包
    int insertUserWallet(String id);

    //注册成功后添加用户积分
    int insertUserIntegral(String userid);

    /**
     * 忘记密码
     */
    int forgetPassword(String mobile, String password);

    /**
     * 填写基本资料
     */
    int setBaseInformation(User user);

    /**
     * 修改基本资料
     */
    int updateBaseInformation(User user);

    /**
     * 密码登录
     */
    User passwordLogin(String mobile, String password);

    //修改登录时间
    int updateLoginTime(String mobile);

    /**
     * 手机号登录
     */
    User mobileLogin(String mobile);

    /**
     * 个人信息接口
     */
    //查看用户身份证是否已经认证
    int selectUserIdentity(String id);

    //查看用户企业是否是否认证
    int selectUserAuthentication(String id);

    //查看用户职业资格证
    int selectUserQualification(String id);

    //查看用户推荐人手机号
    int selectUserRecommendMobile(String id);

    /**
     * 绑定信息
     */
    //查看是否已完善支付宝信息
    int selectzfbInfo(String id);

    //查看是否已完善银行卡信息
    int selectBankInfo(String id);

    /**
     * 职业资格认证
     */
    int insertJobCertification(String job, String skill, String certification_photo, String id);

    /**
     * 我的关注列表
     */
    String[] selectmyInterestList(String id);

    //查看用户片平均星级
    Map<String, Object> selectAvgLevel(String id);

    /**
     * 我的粉丝列表
     */
    String[] selectMyFans(String id);

    //查看我的粉丝列表是否有我关注的人
    int selectMyFansIsattention(String id, String userid);

    //查看是否已经预约
    int selectIsappointment(String userid, String server_id);

    //查看是否已经报名
    int selectIsApply(String userid, String demand_id);

    //查看该服务是否被我预约
    int selectIsByappointment(String userid, String server_id);

    /**
     * 实名认证信息
     */
    Map<String, Object> selectAuthentication(Integer id);

    /**
     * 企业认证
     */
    int insertEnterpriseInfo(EnterpriseInfo enterpriseInfo);

    /**
     * 企业认证
     */
    int updateEnterpriseInfo(EnterpriseInfo enterpriseInfo);

    /**
     * 上传个人照片
     */
    int updateUserPhoto(String userid, String photo);

    /**
     * 上传个人视频
     */
    int insertVideo(String userid, String videoLink, String videoTime, String videoImage);

    /**
     * 关注用户
     */
    int attentionUser(String userid1, String userid2);

    /**
     * 提现申请
     */
    int insertWithdrawApply(Withdraw withdraw);

    //查看用户钱包金额
    String selectUserMoney(String userid);

    //查询用户总收入
    String selectProfitTotal(String userid);

    String selectVipProfitTotal(String userid);

    //查询企业总收入
    String selectEntProfitTotal(String userid);

    //查看用户当月是否有提现记录
    Integer selectWithdrawNum(String date, String userid);

    //申请提现后添加消息表记录
    int insertMessageRecord(String userid, String recordid);

    //修改用户钱包
    int updateUserWallet(Map<String, Object> map);

    /**
     * 钱包明细
     */
    List<Map<String, Object>> selectServerMoney(String userid);

    //查看提现记录
    List<Map<String, Object>> selectWithdrawMoney(String userid);

    //查看充值记录
    List<Map<String, Object>> selectRechargeRecord(String userid);

    //查看已取消订单
    List<Map<String, Object>> selectCancelOrder(String userid, String type);

    //查看付款订单
    List<Map<String, Object>> selectPaymentOrder(String userid);

    /**
     * 取消关注用户
     */
    int unfriendedUser(String userid1, String userid2);

    /**
     * 查看我的推荐人列表
     */
    List<Map<String, Object>> selectMyReferrerList(String mobile);

    /**
     * 查看我的积分
     */
    Map<String, Object> selectMyIntegral(String userid);

    //修改积分等级
    int updateIntegralGrade(String userid, String grade);

    //查看积分使用方式
    Map<String, Object> selectIntegeralWay();

    /**
     * 查看我的积分记录
     */
    List<Map<String, Object>> selectIntegralRecord(String userid);

    /**
     * 我的账户
     */
    //查看用户的优惠券数量
    Integer selectUserDiscountNum(String userid);

    /**
     * 身份认证
     */
    int insertIdentityAuthentication(Identity i);

    //重新进行身份认证
    int updateIdentityAuthentication(Identity i);

    //查看该用户是否已经认证过
    Map<String, Object> selectCountIdentityAuthentication(Identity i);

    //查看该身份证号码时候有人使用
    int countAuthenticationNum(Identity i);

    /**
     * 删除个人照片接口
     */
    int deleteUserPhoto(String userid, String photo);

    /**
     * 查看职业资格证
     */
    Map<String, Object> selectJobCertification(String userid);

    /**
     * 修改登录密码
     */
    int updateLoginPassword(String surePassword, String userid);

    /**
     * 修改支付密码获取验证码
     */
    int updatePayPasswordGetCode(String mobile, String code);

    /**
     * 添加意见反馈
     */
    int insertFeedback(String userid, String content);

    /**
     * 获取个人基本资料
     */
    User selectUserinfo(Integer userid);

    /**
     * 查看企业认证
     */
    Map<String, Object> selectCompany(String userid);

    /**
     * 查看用户信息-
     */
    Map<String, Object> selectUserMobile(String userid);

    /**
     * 修改用户经纬度
     */
    int updateUserAddress(Map<String, Object> map);

    /**
     * 查看用户身份信息
     */
    Map<String, Object> selectUserIdInfo(String userid);

    List<Map<String, Object>> selectCancelOrders(String userid);

    List<Map<String, Object>> selectCancelOrdersIncome(String userid);

    /**
     * 添加下级
     */
    int addUserGrade(User user);

    /**
     * 查询是否已经推荐
     */
    int selectUserParent(String userid);

    /**
     * 查询下级
     *
     * @param userid
     * @return
     */
    List<Map<String, Object>> selectParentUser(User user);

    /**
     * 查询下二级
     *
     * @param userid
     * @return
     */
    List<Map<String, Object>> selectParentUsertwo(User user);

    /**
     * 查询下一级明细
     *
     * @param userid
     * @return
     */
    List<Map<String, Object>> selectParentUserDetail(User user);

    /**
     * 查询下二级明细
     *
     * @param userid
     * @return
     */
    List<Map<String, Object>> selectParentUsertwoDetail(User user);

    /**
     * 查询下一级明细
     *
     * @param userid
     * @return
     */
    List<Map<String, Object>> selectParentUserVipDetail(User user);

    /**
     * 查看推荐人
     *
     * @param userid
     * @return
     */
    String selectRecommendMobileUserId(String mobile);

    /**
     * 查询上级
     *
     * @param userid
     * @return
     */
    String selectParent(String user_id);

    /**
     * 查询是否员工
     *
     * @param userid
     * @return
     */
    String selectStaff(String user_id);

    /**
     * 查询下级交易详情
     */
    List<Map<String, Object>> selectdetail(User user);

    Map<String, Object> upgrade();
    
	int upgradeStop(String levelId);

    /**
     * 查看公司名称和id
     */
    Map<String, Object> selectenterName(String user_id);

    /**
     * 查询是否员工
     *
     * @param userid
     * @return
     */
    String selectenterEnter(String user_id);

    /**
     * 查询是否员工
     *
     * @param userid
     * @return
     */
    String selectUsertEnter(String user_id);

    /**
     * 查询是否员工
     *
     * @param userid
     * @return
     */
    String selectEnterUser(String user_id);

    /**
     * 查询用户是下级还是上级
     */
    List<Map<String, Object>> selectStatus(User user);

    /**
     * -查询企业交易提成
     */
    List<Map<String, Object>> selectEnterProfit(User user);

    /**
     * 禁用上下级
     */
    int updateUserGrade(User user);

    String selectis_vip(String user_id, String is_auth);

    Double selectisTicheng(User user);

    /**
     * 查询是否是否加入企业
     *
     * @param userid
     * @return
     */
    String isSelectUser(String user_id);

    String selectUserParentMobile(String mobile);

    String selectUserAuthenticationAudit(String user_id);

    //提现开关
    Integer withdrawOnOff();

    int updateWithdrawStatus(@Param("id")Long id);

    void updateWithdraw(@Param("status")String status, @Param("reason")String reason, @Param("id")String id);

    List<Withdraw> selectWithdrawList();

	void updateOrder(@Param("orderId")String orderId,@Param("id")String id);

	//增加消息表记录
	int insertMessqge(String recevicer_id,String content,String type,String record_id);
	
}
